#!/usr/bin/python
# -*- coding: utf-8 -*-

'''
查找测试用例，生成测试套件
    unittest.TestLoader()/unittest.defaultTestLoader()
    实例化testloader()类
    调用discover方法生成测试套件
    返回测试套件

运行测试套件，生成测试报告
    创建测试报告名及路径
    以写入模式打开文件
    实例化HTMLTestRunner得到一个runner对象
    调用实例方法执行测试用例
    关闭文件

清理报告
    方案一：全部清理
        os.dirlist()获取某个文件下全部文件
        循环删除没一个文件os.remove

    方案二：保留最新的N个
        os.dirlist()获取某个文件下全部文件
        得到一个列表
        循环删除每一个文件os.remove

    方案三：按文件创建时间删除
        os.dirlist()获取某个文件下全部文件
        获取文件生成时间os.getctime()
        将每个文件名和创建时间组成一个字典：字典推导式：｛创建时间：文件名｝，
        按时间进行排序
        得到最新的5个列表
        循环删除没一个文件os.remove
'''

'''
查找测试用例，生成测试套件
    unittest.TestLoader()/unittest.defaultTestLoader()
    实例化testloader()类
    调用discover方法生成测试套件
    返回测试套件

运行测试套件，生成测试报告
    创建测试报告名及路径
    以写入模式打开文件
    实例化HTMLTestRunner得到一个runner对象
    调用实例方法执行测试用例
    关闭文件
'''

import unittest
import os
import time
import interface01.HTMLTestRunner

def creat_suite():
    case_dir = os.path.dirname(__file__) + r'/testCase'
    loader = unittest.TestLoader()
    suit = loader.discover(start_dir=case_dir, pattern='test*.py')
    return suit

    #删除测试报告
def auto_clear():
    dir = os.path.dirname(__file__) + r'/testReport'
    file_list = os.listdir(dir)
    for i in file_list[:-3]:
        if '.html' in i:
            os.remove(dir + '/' + i)
       


if __name__ == '__main__':
    auto_clear()
    suite = creat_suite()
# 运行测试套件，生成测试报告
    cur_time = time.strftime('%Y_%d_%m_%H_%M_%S', time.localtime())
#     创建测试报告名及路径
    report = os.path.dirname(__file__) + r'/testReport/' + cur_time + r'report.xml'
#     以写入模式打开文件
    with open(report, 'wb') as fp:
#     实例化HTMLTestRunner得到一个runner对象
        runner = interface01.HTMLTestRunner.HTMLTestReportCN(stream=fp, title='接口自动化测试报告',
                                                             description='接口测试结果', verbosity=2)
#     调用实例方法执行测试用例
        runner.run(suite)
#     关闭文件